package cn.edu360.day08;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.junit.Before;
import org.junit.Test;

import java.net.URL;

/**
 * 介绍jsoup的使用
 */
public class TestJsoup {
    Document document = null;

    /**
     * 获取具体节点的内容和attr
     * 1：标签对中间的值    text方法直接获取，返回值是String
     * 2：获取属性值对应的数据    attr（"属性名称"）   返回具体的数据，也是String
     */
    @Test
    public void getValue(){
        Elements select = document.select("#resultList .el span a");
        for (Element e: select) {
            String text = e.text();//得到内容
            String href = e.attr("href");
            System.out.println(href);
            System.out.println("-----------------");
        }
    }

    /**
     * 定位位置的方法：
     * 1：通过id去查找    查找到的数据是唯一的
     * 2:通过class查找数据   查找到对个数据，集合的形式
     * 3：通过标签查找数据
     *
     * select css选择器  很好的处理上级关系
     * id ---->   #idname
     * class ---->    .classname
     * 标签（tag）  --->  原样写上
     * 上下级关系   使用空格 链接到一起
     *
     *
     * Elements是Element的集合     Elements集成了ArrayList
     * element 和 document是有继承关系的，相同方法
     *
     */
    @Test
    public void getElemnets(){

        Element elementById = document.getElementById("resultList");
        //System.out.println(elementById);
        Elements elementsByClass = document.getElementsByClass("txt");
        for (Element e:elementsByClass) {
            //System.out.println(e);
            //System.out.println("----------------------");
        }
        Elements img = document.getElementsByTag("img");
        for (Element e:img) {
            //System.out.println(e);
            //System.out.println("--------");
        }

        //连级   （上下关系）
        Elements el = elementById.getElementsByClass("el");
        for (Element e:el) {
            //System.out.println(e);
            //System.out.println("-------------");
        }

        Elements txt = document.select("#resultList .el span a");
        for (Element e : txt) {
            //System.out.println(e);
            //System.out.println("------------");
        }
    }

    /**
     * 通过url获取网站内容
     */
    @Before
    public void getDocumentByUrl(){
        try{
            String u = "https://search.51job.com/list/010000,000000,0000,00,9,99,%25E5%25A4%25A7%25E6%2595%25B0%25E6%258D%25AE,2,1.html?lang=c&stype=1&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=4&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=";
            URL url = new URL(u);
            document = Jsoup.parse(url, 4000);//第一个是网址，第二个是等待时长    //返回的结果就是所需要的网站源代码
            //System.out.println(document);
        }catch (Exception e){
            e.printStackTrace();
        }

    }
}
